home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / plain C OS8 / Everything / ModalCheckboxes.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-29  |  7.2 KB  |  233 lines  |  [TEXT/CWIE]

  1. /* ModalCheckboxes.c -- Modal dialog */
  2.  
  3. #include <Types.h>
  4. #include <Quickdraw.h>
  5. #include <Controls.h>
  6. #include <Dialogs.h>
  7. #include <Events.h>
  8. #include <Lists.h>
  9. #include <Menus.h>
  10. #include <TextEdit.h>
  11. #include <Appearance.h>
  12. #include <stdlib.h>
  13.  
  14. #include "ResourceDefs.h"
  15. #include "Miscellany.h"
  16. #include "ControlUtils.h"
  17.  
  18. #include "Dispatcher.h"
  19. #include "ModalCheckboxes.h"
  20.  
  21. #define kOKButton        1
  22. #define kStandardCheck        2
  23. #define kXxCheck        3
  24. #define kCapTriangleLabel        4
  25. #define kGraphicBox        5
  26. #define kCapcicnLabel        6
  27. #define kLRCheck        7
  28. #define kCapicl8Label        8
  29. #define kLR2Check        9
  30. #define kCapICNLabel        10
  31. #define kLR3Check        11
  32. #define kCapPICTLabel        12
  33. #define kLR4Check        13
  34. #define kCapicl9Label        14
  35. #define kCheckboxCheck        15
  36. #define kBevelBox        16
  37. #define kCheckbox2Check        17
  38. #define kNextCheck        18
  39. #define kNext2Check        19
  40.  
  41.  
  42. /*----------*/
  43. Boolean        GetModalCheckboxes (
  44.     DModalCheckboxesData*        ioData)
  45. {
  46.     Boolean            result = false;
  47.     ModalCheckboxes*        dialog = NewModalCheckboxes ();
  48.  
  49.     result = AMDialog_RunModal ((AMDialog*)dialog, DLOG_ModalCheckboxes, (AMSignaler*)ioData);
  50.  
  51.     DeleteModalCheckboxes (dialog);
  52.  
  53.     return result;
  54. }
  55.  
  56. //----------
  57. ModalCheckboxes*        NewModalCheckboxes ()
  58. {
  59.     ModalCheckboxes*        dialog;
  60.  
  61.     dialog = (ModalCheckboxes*)malloc (sizeof (ModalCheckboxes));
  62.     ModalCheckboxes_Init (dialog);
  63.     SetClassID (dialog, classModalCheckboxes);
  64.  
  65.     return dialog;
  66. }
  67.  
  68. //----------
  69. void    DeleteModalCheckboxes (
  70.     ModalCheckboxes*        dialog)
  71. {
  72.     ModalCheckboxes_Free (dialog);
  73.     free (dialog);
  74. }
  75.  
  76. //----------
  77. void    ModalCheckboxes_Init (
  78.     ModalCheckboxes*        self)
  79. {
  80.     AMDialog_Init ((AMDialog*)self);
  81. }
  82.  
  83. //----------
  84. void    ModalCheckboxes_Free (
  85.     ModalCheckboxes*        self)
  86. {
  87.     AMDialog_Free ((AMDialog*)self);
  88. }
  89.  
  90. //----------
  91. void    ModalCheckboxes_FinishMake (
  92.     ModalCheckboxes*        self)
  93. {
  94.     self->mOKHandle = AMDialog_GetControlItem ((AMDialog*)self, kOKButton);
  95.     SetDefaultState (self->mOKHandle, true);
  96.     SetDialogDefaultItem (((AMDialog*)self)->mDialog, kOKButton);
  97.     self->mStandardHandle = AMDialog_GetControlItem ((AMDialog*)self, kStandardCheck);
  98.     self->mXxHandle = AMDialog_GetControlItem ((AMDialog*)self, kXxCheck);
  99.     self->mGraphicHandle = AMDialog_GetControlItem ((AMDialog*)self, kGraphicBox);
  100.     self->mLRHandle = AMDialog_GetControlItem ((AMDialog*)self, kLRCheck);
  101.     self->mLR2Handle = AMDialog_GetControlItem ((AMDialog*)self, kLR2Check);
  102.     self->mLR3Handle = AMDialog_GetControlItem ((AMDialog*)self, kLR3Check);
  103.     self->mLR4Handle = AMDialog_GetControlItem ((AMDialog*)self, kLR4Check);
  104.     self->mCheckboxHandle = AMDialog_GetControlItem ((AMDialog*)self, kCheckboxCheck);
  105.     self->mBevelHandle = AMDialog_GetControlItem ((AMDialog*)self, kBevelBox);
  106.     self->mCheckbox2Handle = AMDialog_GetControlItem ((AMDialog*)self, kCheckbox2Check);
  107.     SetBevelButtonGraphicAlignment (self->mCheckbox2Handle, kControlBevelButtonAlignCenter, 0, 0);
  108.     self->mNextHandle = AMDialog_GetControlItem ((AMDialog*)self, kNextCheck);
  109.     SetBevelButtonTextPlacement (self->mNextHandle, kControlBevelButtonPlaceToRightOfGraphic);
  110.     SetBevelButtonTextAlignment (self->mNextHandle, kControlBevelButtonAlignTextFlushLeft, 0);
  111.     SetBevelButtonGraphicAlignment (self->mNextHandle, kControlBevelButtonAlignLeft, 0, 0);
  112.     self->mNext2Handle = AMDialog_GetControlItem ((AMDialog*)self, kNext2Check);
  113.     SetBevelButtonTextPlacement (self->mNext2Handle, kControlBevelButtonPlaceBelowGraphic);
  114.     SetBevelButtonTextAlignment (self->mNext2Handle, kControlBevelButtonAlignTextCenter, 0);
  115.     SetBevelButtonGraphicAlignment (self->mNext2Handle, kControlBevelButtonAlignTop, 0, 0);
  116. }
  117.  
  118. //----------
  119. void    ModalCheckboxes_ConnectToData (
  120.     ModalCheckboxes*        self,
  121.     AMSignaler*        inData)
  122. {
  123.     AMDialog_ConnectToData ((AMDialog*)self, inData);
  124.     self->mData = (DModalCheckboxesData*) inData;
  125.  
  126.     SetControlValue (self->mStandardHandle, GetStandard4 (self->mData));
  127.     SetControlValue (self->mXxHandle, GetXx2 (self->mData));
  128.     SetControlValue (self->mLRHandle, GetLR5 (self->mData));
  129.     SetControlValue (self->mLR2Handle, GetLR6 (self->mData));
  130.     SetControlValue (self->mLR3Handle, GetLR7 (self->mData));
  131.     SetControlValue (self->mLR4Handle, GetLR8 (self->mData));
  132.     SetControlValue (self->mCheckboxHandle, GetCheckbox3 (self->mData));
  133.     SetControlValue (self->mCheckbox2Handle, GetCheckbox4 (self->mData));
  134.     SetBevelButtonGraphicAlignment (self->mCheckbox2Handle, kControlBevelButtonAlignCenter, 0, 0);
  135.     SetControlValue (self->mNextHandle, GetNext3 (self->mData));
  136.     SetBevelButtonTextPlacement (self->mNextHandle, kControlBevelButtonPlaceToRightOfGraphic);
  137.     SetBevelButtonTextAlignment (self->mNextHandle, kControlBevelButtonAlignTextFlushLeft, 0);
  138.     SetBevelButtonGraphicAlignment (self->mNextHandle, kControlBevelButtonAlignLeft, 0, 0);
  139.     SetControlValue (self->mNext2Handle, GetNext4 (self->mData));
  140.     SetBevelButtonTextPlacement (self->mNext2Handle, kControlBevelButtonPlaceBelowGraphic);
  141.     SetBevelButtonTextAlignment (self->mNext2Handle, kControlBevelButtonAlignTextCenter, 0);
  142.     SetBevelButtonGraphicAlignment (self->mNext2Handle, kControlBevelButtonAlignTop, 0, 0);
  143. }
  144.  
  145. //----------
  146. void    ModalCheckboxes_DoItem (
  147.     ModalCheckboxes*        self,
  148.     SInt16        inItemHit)
  149. {
  150.     switch (inItemHit) {
  151.     case kOKButton:
  152.             AMDialog_SetResult ((AMDialog*)self, true);
  153.         break;
  154.     case kStandardCheck:
  155.             SetStandard4 (self->mData, ToggleCheckbox (self->mStandardHandle));
  156.         break;
  157.     case kXxCheck:
  158.             SetXx2 (self->mData, ToggleCheckbox (self->mXxHandle));
  159.         break;
  160.     case kLRCheck:
  161.             SetLR5 (self->mData, ToggleCheckbox (self->mLRHandle));
  162.         break;
  163.     case kLR2Check:
  164.             SetLR6 (self->mData, ToggleCheckbox (self->mLR2Handle));
  165.         break;
  166.     case kLR3Check:
  167.             SetLR7 (self->mData, ToggleCheckbox (self->mLR3Handle));
  168.         break;
  169.     case kLR4Check:
  170.             SetLR8 (self->mData, ToggleCheckbox (self->mLR4Handle));
  171.         break;
  172.     case kCheckboxCheck:
  173.             SetCheckbox3 (self->mData, ToggleCheckbox (self->mCheckboxHandle));
  174.         break;
  175.     case kCheckbox2Check:
  176.             SetCheckbox4 (self->mData, GetControlValue (self->mCheckbox2Handle));
  177.         break;
  178.     case kNextCheck:
  179.             SetNext3 (self->mData, GetControlValue (self->mNextHandle));
  180.         break;
  181.     case kNext2Check:
  182.             SetNext4 (self->mData, GetControlValue (self->mNext2Handle));
  183.         break;
  184.  
  185.     } // switch
  186. }
  187.  
  188. //----------
  189. void    ModalCheckboxes_DataChanged (
  190.     ModalCheckboxes*        self,
  191.     long        inDataID)
  192. {
  193.     if (inDataID == idStandard4) {
  194.         SetControlValue (self->mStandardHandle, GetStandard4 (self->mData));
  195.     }
  196.     if (inDataID == idXx2) {
  197.         SetControlValue (self->mXxHandle, GetXx2 (self->mData));
  198.     }
  199.     if (inDataID == idLR5) {
  200.         SetControlValue (self->mLRHandle, GetLR5 (self->mData));
  201.     }
  202.     if (inDataID == idLR6) {
  203.         SetControlValue (self->mLR2Handle, GetLR6 (self->mData));
  204.     }
  205.     if (inDataID == idLR7) {
  206.         SetControlValue (self->mLR3Handle, GetLR7 (self->mData));
  207.     }
  208.     if (inDataID == idLR8) {
  209.         SetControlValue (self->mLR4Handle, GetLR8 (self->mData));
  210.     }
  211.     if (inDataID == idCheckbox3) {
  212.         SetControlValue (self->mCheckboxHandle, GetCheckbox3 (self->mData));
  213.     }
  214.     if (inDataID == idCheckbox4) {
  215.         SetControlValue (self->mCheckbox2Handle, GetCheckbox4 (self->mData));
  216.     }
  217.     if (inDataID == idNext3) {
  218.         SetControlValue (self->mNextHandle, GetNext3 (self->mData));
  219.     }
  220.     if (inDataID == idNext4) {
  221.         SetControlValue (self->mNext2Handle, GetNext4 (self->mData));
  222.     }
  223. }
  224.  
  225. //----------
  226. Boolean        ModalCheckboxes_Filter (
  227.     ModalCheckboxes*            self,
  228.     EventRecord            *ioEvent,
  229.     DialogItemIndex        *outItemHit)
  230. {
  231.     return AMDialog_Filter ((AMDialog*)self, ioEvent, outItemHit);
  232. }
  233.